An Integrated Development Environment (IDE) comprises computer software that assists computer programmers in developing software. Modern examples of IDE products are ECLIPSE®, NETBEANS®, VISUAL STUDIO®, and VISUAL BASIC®.
IDEs may comprise a host of useful features, such as a source code editor, a compiler, an interpreter, build-automation tools, a debugger, a version control system, and various tools to simplify the construction of a Graphic User Interface (GUI). A class browser, an object inspector, and a class hierarchy diagram may also be provided to assist in object oriented software development. Some IDEs support multiple programing languages. While most modern IDEs are graphical, IDEs in use before the advent of windowing systems and even some modern IDEs are text-based, using function keys to perform various tasks. TURBO PASCAL® is an example of a text-based IDE.
IDEs increasingly support visual programming. Visual programming allows computer programmers to create new applications at least in part by manipulating graphical objects on a visual design surface. For example, a programmer may design an application by moving programming building blocks or code nodes to create flowcharts or structure diagrams which are then compiled or interpreted. These flowcharts are often, though not necessarily, based on the Unified Modeling Language (UML). In another example, a programmer may create an application GUI by manipulating graphical objects, such as by dragging and dropping new buttons (or other graphical objects) onto a visual design surface for the desired GUI, then setting the desired properties of the buttons, and so forth.
Because software may be designed to provide an infinite range of useful functions for an equally large range of use scenarios, and GUI design is also highly customizable to best suit the particular needs of a specific software application, it is common for IDEs to be extended by computer programmers to better serve a programmer's particular needs. It is neither possible nor desirable for a single IDE to provide the full range of functions that every programmer may desire. Such an IDE would be too large and complex for any individual computer programmer. For this reason, a wide range of extensions for popoular IDEs such as VISUAL STUDIO® become available over time. Such extensions may be created and made available by the original developer of the IDE (in this case MICROSOFT® Corporation of Redmond, Wash.) or by third-party developers who discover and create useful extensions to address a particular need, and may sell or otherwise distribute their extension to others.
The importance of IDE extensibility also applies to visual designers. Extensions to a visual designer tool can increase productivity in development of software by making a host of extended functions readily available to the computer programmer. However, many features of modern IDE visual designers are either difficult or impossible to extend. While additional variations of visual designer feature types that were included in an original visual designer may be added, it is either very cumbersome or impossible to add completely new feature types to modern visual designers. There is a need in the industry for better extensibility support in IDE visual designers.